let userinfoGlobal = {
  username: '',
  city: '',
  education: '',
  email: '',
  phone: '',
  recheckPassword: '',
  password: '',
  sex: '',
  role: '',
  age: ''
};

Page({

  /**
   * 页面的初始数据
   */
  data: {
    isShow: false,
    errorMessage: '',
    genders: ['男', '女'],
    index: -1,
    region: ['广东省', '广州市', '海珠区'],
    customItem: '全部',
  },

  bindBlur(e) {
    let { detail: { value }, target: { id } } = e;
    if (id !== '') {
      userinfoGlobal[id] = value;
    }
  },
  /**
   * 用户点击注册之后的处理
   */
  userRegisterSubmit(e) {
    let userInfo = e.detail.value;
    userInfo = Object.assign(userinfoGlobal, userInfo);
    let userInfoCheck = this.userFormValid(userInfo);
    if (!userInfoCheck) {
      wx.showToast({
        title: '正在注册',
        icon: 'loading',
        duration: 1000,
        mask: true
      });
      wx.request({
        url: 'https://10.10.11.58:8101/archermind-ai/register',
        //下面的参数为注册接口必填参数，以实际参数为准，如下为测试数据
        data: {
          'userName': userInfo.username,
          'passWord': userInfo.password,
          'sex': userInfo.sex,
          'age': userInfo.age,
          'email': userInfo.email,
          'phone': userInfo.phone
        },
        method: 'POST',
        header: {
          //'content-type': 'application/x-www-form-urlencoded'
          'content-type': 'application/json'
        },
        success(res) {
          console.log(res.data)
          wx.navigateTo({
            url: '/pages/index/index'
          })
        }
      });
    }
  },
  /**
   * 表单验证
   */
  userFormValid(userInfo = {}) {
    let userInfoKey = Object.keys(userInfo);
    let isFlag = false;
    userInfoKey.forEach((item) => {
      if ((userInfo[item] === '' || userInfo[item] === -1) && !isFlag) {
        this.userKeyEmpty(item);
        isFlag = true;
        return;
      }
    });
    if (!isFlag && (this.checkPwdSize(userInfo) || this.checkAgeSize(userInfo) || this.checkEmail(userInfo))) {
      isFlag = true;
    }
    return isFlag;
  },
  /**
   * 检查密码合法
   */
  checkPwdSize(userInfo) {
    let passwordSize = userInfo.password.length;
    let {
      password,
      recheckPassword
    } = userInfo;
    if (passwordSize < 6) {
      this.showMessage('密码小于6位');
      return true;
    }
    if (password !== recheckPassword) {
      this.showMessage('两次密码输入不一致');
      return true;
    }
    return false;
  },
  /**
   * 检查年龄合法
   */
  checkAgeSize(userInfo) {
    let {
      age
    } = userInfo;

    if (parseInt(age, 10) < 0 || parseInt(age, 10) > 120) {
      this.showMessage('年龄不合规');
      return true;
    }
    return false;
  },
  /**
   * 检查邮箱合法
   */
  checkEmail(userInfo) {
    let {
      email
    } = userInfo;
    let reMail = /^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/;
    let s = new RegExp(reMail);
    if (!s.test(email)) {
      this.showMessage('邮箱格式不正确');
      return true;
    }
    return false;
  },

  /**
   * 检查所有字段不能为空
   */
  userKeyEmpty(userKey, value) {
    let tipString = '';
    switch (userKey) {
      case 'username':
        tipString = '用户名不能为空';
        break;
      case 'city':
        tipString = '城市不能为空';
        break;
      case 'education':
        tipString = '学历不能为空';
        break;
      case 'email':
        tipString = '邮箱不能为空';
        break;
      case 'phone':
        tipString = '电话号码不能为空';
        break;
      case 'recheckPassword':
        tipString = '确认密码不能为空';
        break;
      case 'password':
        tipString = '密码不能为空';
        break;
      case 'sex':
        tipString = '性别不能为空';
        break;
      case 'role':
        tipString = '角色不能为空';
        break;
      case 'age':
        tipString = '角色不能为空';
        break;
      default:
        break;
    }
    this.showMessage(tipString);
  },

  /**
   * 性别选择
   */
  bindPickerGenter(e) {
    this.setData({
      index: e.detail.value
    });
  },

  /**
   * 显示错误信息
   */
  showMessage(message) {
    this.setData({
      errorMessage: message,
      isShow: true
    });
    clearTimeout(this.showMessageTimmer);
    this.showMessageTimmer = setTimeout(() => {
      this.setData({
        isShow: false
      });
    }, 3000);
  },
  /**
   * 城市选择
   */
  bindRegionChange(e) {
    this.setData({
      region: e.detail.value
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})